#!/bin/bash

# 本地开发环境启动脚本
# 用途: 快速启动本地开发环境，无需MySQL

echo "🚀 启动本地开发环境..."

# 设置颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 检查Node.js版本
echo -e "${BLUE}📋 检查Node.js环境...${NC}"
node_version=$(node --version 2>/dev/null)
if [ $? -eq 0 ]; then
    echo -e "${GREEN}✅ Node.js版本: $node_version${NC}"
else
    echo -e "${RED}❌ Node.js未安装，请先安装Node.js${NC}"
    exit 1
fi

# 创建必要的目录
echo -e "${BLUE}📁 创建必要目录...${NC}"
mkdir -p backend/database
mkdir -p backend/uploads/local
mkdir -p backend/logs
mkdir -p backend/templates/emails

# 安装后端依赖
echo -e "${BLUE}📦 安装后端依赖...${NC}"
cd backend
if [ ! -d "node_modules" ]; then
    npm install
    if [ $? -eq 0 ]; then
        echo -e "${GREEN}✅ 后端依赖安装完成${NC}"
    else
        echo -e "${RED}❌ 后端依赖安装失败${NC}"
        exit 1
    fi
else
    echo -e "${GREEN}✅ 后端依赖已存在${NC}"
fi

# 检查SQLite3是否可用
echo -e "${BLUE}🗄️ 检查SQLite3...${NC}"
if command -v sqlite3 &> /dev/null; then
    echo -e "${GREEN}✅ SQLite3可用${NC}"
else
    echo -e "${YELLOW}⚠️ SQLite3未找到，尝试安装...${NC}"
    # 在macOS上尝试安装sqlite3
    if command -v brew &> /dev/null; then
        brew install sqlite3
    else
        echo -e "${RED}❌ 请手动安装SQLite3${NC}"
    fi
fi

# 初始化本地数据库
echo -e "${BLUE}🗄️ 初始化本地数据库...${NC}"
if [ ! -f "database/local.db" ]; then
    # 创建SQLite版本的初始化脚本
    cat > database/init_local.sql << 'EOF'
-- 本地开发环境数据库初始化脚本 (SQLite)
-- 简化版本，用于快速开发

-- 用户表
CREATE TABLE IF NOT EXISTS users (
  user_id INTEGER PRIMARY KEY AUTOINCREMENT,
  username TEXT,
  email TEXT UNIQUE,
  phone TEXT,
  password_hash TEXT NOT NULL,
  first_name TEXT,
  last_name TEXT,
  membership_level TEXT DEFAULT 'bronze',
  points_balance INTEGER DEFAULT 0,
  is_active BOOLEAN DEFAULT 1,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

-- 管理员表
CREATE TABLE IF NOT EXISTS admins (
  admin_id INTEGER PRIMARY KEY AUTOINCREMENT,
  username TEXT UNIQUE NOT NULL,
  email TEXT UNIQUE NOT NULL,
  password_hash TEXT NOT NULL,
  name TEXT NOT NULL,
  role TEXT DEFAULT 'staff',
  is_active BOOLEAN DEFAULT 1,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

-- 菜单分类表
CREATE TABLE IF NOT EXISTS menu_categories (
  category_id INTEGER PRIMARY KEY AUTOINCREMENT,
  name TEXT NOT NULL,
  description TEXT,
  display_order INTEGER DEFAULT 0,
  is_active BOOLEAN DEFAULT 1,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

-- 菜单项表
CREATE TABLE IF NOT EXISTS menu_items (
  item_id INTEGER PRIMARY KEY AUTOINCREMENT,
  category_id INTEGER,
  name TEXT NOT NULL,
  description TEXT,
  price DECIMAL(10,2) NOT NULL,
  image_url TEXT,
  is_available BOOLEAN DEFAULT 1,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (category_id) REFERENCES menu_categories(category_id)
);

-- 订单表
CREATE TABLE IF NOT EXISTS orders (
  order_id INTEGER PRIMARY KEY AUTOINCREMENT,
  user_id INTEGER,
  total_amount DECIMAL(10,2) NOT NULL,
  status TEXT DEFAULT 'pending',
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (user_id) REFERENCES users(user_id)
);

-- 插入测试数据
INSERT OR IGNORE INTO menu_categories (name, description, display_order) VALUES
('主食', '各种主食类菜品', 1),
('饮品', '各种饮料和茶类', 2),
('小食', '小食和零食', 3);

INSERT OR IGNORE INTO menu_items (category_id, name, description, price) VALUES
(1, '牛肉面', '经典牛肉面', 15.80),
(1, '鸡肉饭', '香嫩鸡肉饭', 12.50),
(2, '柠檬茶', '清爽柠檬茶', 4.50),
(2, '咖啡', '香浓咖啡', 5.00),
(3, '薯条', '金黄薯条', 6.80);

-- 创建默认管理员账户 (密码: admin123)
INSERT OR IGNORE INTO admins (username, email, password_hash, name, role) VALUES
('admin', 'admin@localhost', '$2b$08$rGQHQJ9QqQJ9QqQJ9QqQJOQJ9QqQJ9QqQJ9QqQJ9QqQJ9QqQJ9QqQ', '系统管理员', 'super_admin');
EOF

    # 执行初始化脚本
    sqlite3 database/local.db < database/init_local.sql
    if [ $? -eq 0 ]; then
        echo -e "${GREEN}✅ 本地数据库初始化完成${NC}"
    else
        echo -e "${RED}❌ 本地数据库初始化失败${NC}"
        exit 1
    fi
else
    echo -e "${GREEN}✅ 本地数据库已存在${NC}"
fi

# 复制本地环境配置
echo -e "${BLUE}⚙️ 配置本地环境变量...${NC}"
cp .env.local .env
echo -e "${GREEN}✅ 环境配置完成${NC}"

# 启动后端服务
echo -e "${BLUE}🚀 启动后端服务...${NC}"
echo -e "${YELLOW}访问地址:${NC}"
echo -e "  API服务: http://localhost:3000"
echo -e "  API文档: http://localhost:3000/api-docs"
echo -e "  健康检查: http://localhost:3000/health"
echo -e "${YELLOW}按 Ctrl+C 停止服务${NC}"
echo ""

# 启动开发服务器
npm run dev 2>/dev/null || node src/app.js